<?/****************************************************************************************
* Nombre:                                              Modulo: Mensajes al Usuario
* Objetivo: Funciones del Modulo de Mensajes al Usuario
* Precondicion:
* Parametros:
* Responsable:                                         Fecha Ultima Modificacion: 10/23/2002
* Notas:
*  Origen: Es el modulo y otra capa que genera el Mensaje.
*  Nivel: A que tipo de Usuario, se esta generando el mensaje.
*	Los Nivel de Mensaje:
*		1. Todo
*		2. Advertencias y Errores
*		3. Solo Errores
******************************************************************************************/?>
<?	
	class SystemMessage 
	{
		var $aMensajes = array();
		var $bError;
	
		function saveMessage() 
		{
			if ( $this->isMessage() ) 
			{
				foreach( $this->aMensajes as $aMensaje )
				{
					$cGuardarMensajes .= implode(  ";" , $aMensaje ) . "|";
				}
				$_SESSION['cError'] = $cGuardarMensajes;
			}
		}

		function retrieveMessage() 
		{
			if ( $_SESSION['cError'] != '' ) 
			{
				$aMensajesGuardados = explode (  "|" , $_SESSION['cError'] );
				foreach ( $aMensajesGuardados as $cMensaje )
				{
					if ( $cMensaje ) $this->aMensajes[] = explode(";", $cMensaje );
				}
			}
		}
		
		function addMessage( $cMensaje , $nTipoMensaje = MENSAJE_ADVERTENCIA, $cArchivo = '', $nLinea = '' ) 
		{	    
			// Si se produjo un Error guarda los Errores Tecnicos
			if ( $nTipoMensaje == E_ERROR || $nTipoMensaje == E_USER_ERROR || $nTipoMensaje == E_PARSE )
			{
				$this->bError = true;
				if ( GUARDAR_REGISTRO_ERRORES == true  ) 
				{
					$nFd = fopen( LOG_FILE , "a");
					fwrite($nFd, date("Y-m-d h:i") . ";" . '"' . $cOrigen .  '"' . ";" . '"' . $cMensaje .  '"' . "\n");
					fclose($nFd);
				}
			}
			if ( $nTipoMensaje != E_NOTICE )
			{
				$this->aMensajes[] = array( $cMensaje, $nTipoMensaje, $cArchivo, $nLinea );
			}
		}
		
		function isError() 
		{
			return $this->bError;
		}
		function isMessage() 
		{
			return (count($this->aMensajes)>0);
		}

		function showMessage() 
		{
			$cReturn = "";
			// Por cada Menaje en la Matriz aMensajes
			foreach( $this->aMensajes as $aMensaje ) 
			{
				// Setea el Estilo y el Icono de acuerdo al Tipo de Mensaje
				switch ( $aMensaje[1] ) 
				{
					case E_ERROR:
					case E_PARSE:
					case E_USER_ERROR:
						$cClass = "mensaje_error";
						break;
					case E_WARNING:
					case E_USER_WARNING :
						$cClass = "mensaje_advertencia";
						break;
					case E_NOTICE:
					case E_USER_NOTICE :
						$cClass = "mensaje_aviso";
						break;
				}
				$cReturn .= "<div class='$cClass'>" . $aMensaje[0];
				if ( $aMensaje[2] ) 
				{
					$cReturn .= ' en ' . $aMensaje[2] . ':' . $aMensaje[3] ;
				}
				$cReturn .= "</div><br/>";			
			}
			return $cReturn;
		}

		function cleanMessage()
		{
			$nqMensajes = count($this->aMensajes);
			for($nContador = 0; $nContador < $nqMensajes; $nContador++){
				array_pop($this->aMensajes);
			}
			$this->bError = false;
			$_SESSION['cError'] = '';
		}
	}
?>
